package com.huike.web.controller.common;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletResponse;

import com.alibaba.excel.util.IoUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.huike.clues.service.ISysFileService;

import com.huike.common.core.controller.BaseController;
import com.huike.common.core.domain.AjaxResult;


import java.io.File;
import java.io.FileInputStream;


/**
 * 通用请求处理
 */
@RestController
public class CommonController extends BaseController {
    private static final Logger log = LoggerFactory.getLogger(CommonController.class);

    @Autowired
    private ISysFileService fileService;
    @Value("${base.path}")
    private String basePath;


    /**
     * 通用上传请求
     */
    @PostMapping("/common/upload")
    public AjaxResult uploadFile(MultipartFile file){
        try{
            // 上传文件路径
            return fileService.upload(file);
        }catch (Exception e){
            return AjaxResult.error(e.getMessage());
        }
    }

    /**
     * 文件下载
     * @param fileName
     * @param response
     */
    @GetMapping("/common/download")
    public void download(String fileName, HttpServletResponse response) throws Exception {
        FileInputStream fileInputStream = new FileInputStream(new File(basePath+fileName));
        ServletOutputStream outputStream = response.getOutputStream();
        response.addHeader("Content-Disposition", "attachment; filename=" + fileName);
        IoUtils.copy(fileInputStream,outputStream);
        fileInputStream.close();
        outputStream.close();
    }
}